/**
 * Représente un mot présent dans le dictionnaire
 * 
 * @author Marie-Hélène Goddet, Damien Finck, Cédric Schaller
 * 
 */
package fastwriting;

import java.text.Normalizer;
import java.text.Normalizer.Form;

public class MotDico{
	
	private String mot; //Le mot indiqué dans le dictionnaire
	private String motSansAccent; //Le mot sans accents et en minuscule ou null s'il n'y a pas d'accents dans mot
	
	/**
	 * Constructeur
	 * @param entree le mot tel qu'il est dans le fichier
	 */
	public MotDico(String entree){
		String tmp;
		mot = entree;
		tmp = removeAccents(entree);
		if (!(tmp.equals(mot))){
			motSansAccent = tmp.toLowerCase();
		}else {
			motSansAccent = null;
		}
	}
	
	/**
	 * Retourne le mot sans accent en minuscule
	 * @return le mot sans accent en minuscule
	 */
	public String getMotSansAccentMin(){
		if (motSansAccent != null){
			return(motSansAccent);
		} else {
			return(mot.toLowerCase());
		}
	}
	
	public String toString(){
		return(mot);
	}
	
	/**
	 * Enlève les accents et les caractères œ et æ
	 * @param text le mot à traiter
	 * @return le mot sans accents
	 */
	public static String removeAccents(String text) {
		/* table ascii : http://images.cnblogs.com/cnblogs_com/fishert/ascii.gif
		 * source fonction : http://glaforge.free.fr/weblog/index.php?itemid=115
		 * pattern : http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
		 * autres méthodes : http://www.rgagnon.com/javadetails/java-0456.html
		 * 
		 * test : Debug.addlog(removeAccents("épicé et du cœur éàù !!"));
		 */
		String tmp=text.replaceAll("œ","oe").replaceAll("æ","ae");
		tmp = Normalizer.normalize(tmp,Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
		return tmp;
	}
	
	public boolean equals(Object m)
	{
		if (! (m instanceof MotDico)){
			return false;
		}
		else {
			return(((MotDico)m).toString().equals(mot));
		}
	}
}